import { get, post, postWithQueryParams } from "@/api/request";

/**
 * 前期手续 控制器 / 前期手续 控制器添加前期手续
 * @param {object} data
 * @param {array<number>} [data.attchIdList] 附件ID列表
 * @param {string} [data.endTime] 结束时间 YYYY-MM-DD HH:mm:ss
 * @param {number} [data.menuId] 菜单ID
 * @param {string} [data.nameOfEarlyStage] 前期阶段名称
 * @param {number} [data.projectId] 项目ID
 * @param {string} [data.remarks] 备注
 * @param {number} [data.responsiblePerson] 负责人
 * @param {string} [data.startTime] 开始时间 YYYY-MM-DD HH:mm:ss
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<PreliminaryProcedure页面展示实体>}
 */
export function preliminaryProcedureAdd(data, config) {
  return post("/preliminaryProcedure/add", data, config);
}

/**
 * 前期手续 控制器 / 前期手续 控制器删除前期手续
 * @param {object} params
 * @param {object} data
 * @param {string} params.id 前期手续ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<PreliminaryProcedure页面展示实体>}
 */
export function preliminaryProcedureDelete(params, data, config) {
  return postWithQueryParams("/preliminaryProcedure/delete", params, data, config);
}

/**
 * 前期手续 控制器 / 前期手续 控制器查询前期手续详情
 * @param {object} params
 * @param {string} params.id 前期手续ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<PreliminaryProcedure页面展示实体>}
 */
export function preliminaryProcedureDetail(params, config) {
  return get("/preliminaryProcedure/detail", params, config);
}

/**
 * 前期手续 控制器 / 前期手续 控制器根据项目id和前期手续名称查询前期手续
 * @param {object} params
 * @param {object} data
 * @param {string} params.nameOfEarlyStage nameOfEarlyStage
 * @param {number} params.projectId projectId
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<PreliminaryProcedure页面展示实体>}
 */
export function preliminaryProcedureDetailByProject(params, data, config) {
  return postWithQueryParams("/preliminaryProcedure/detailByProject", params, data, config);
}

/**
 * 前期手续 控制器 / 前期手续 控制器导出
 * @param {object} data
 * @param {string} [data.endDate] 结束时间
 * @param {array<number>} [data.idList] ID列表
 * @param {number} [data.menuId] 菜单ID
 * @param {string} [data.nameOfEarlyStageName] 前期阶段名称
 * @param {string} [data.projectApprovalDateEnd] 立项日期结束时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.projectApprovalDateStart] 立项日期开始时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.projectName] 项目名称
 * @param {string} [data.startDate] 开始时间
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise}
 */
export function preliminaryProcedureExport(data, config) {
  return post("/preliminaryProcedure/export", data, config);
}

/**
 * 前期手续 控制器 / 前期手续 控制器分页查询前期手续
 * @param {object} data
 * @param {string} [data.endDate] 结束时间
 * @param {number} [data.length] 分页大小
 * @param {number} [data.menuId] 菜单ID
 * @param {string} [data.nameOfEarlyStageName] 前期阶段名称
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.projectApprovalDateEnd] 立项日期结束时间
 * @param {string} [data.projectApprovalDateStart] 立项日期开始时间
 * @param {string} [data.projectName] 项目名称
 * @param {number} [data.start] 查询记录起始下标
 * @param {string} [data.startDate] 开始时间
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<PreliminaryProcedure页面展示实体>>}
 */
export function preliminaryProcedureList(data, config) {
  return post("/preliminaryProcedure/list", data, config);
}

/**
 * 前期手续 控制器 / 前期手续 控制器更新前期手续
 * @param {object} data
 * @param {array<number>} [data.attchIdList] 附件ID列表
 * @param {string} [data.endTime] 结束时间 YYYY-MM-DD HH:mm:ss
 * @param {number} [data.id] 主键
 * @param {string} [data.nameOfEarlyStage] 前期阶段名称
 * @param {number} [data.projectId] 项目ID
 * @param {string} [data.remarks] 备注
 * @param {number} [data.responsiblePerson] 负责人
 * @param {string} [data.startTime] 开始时间 YYYY-MM-DD HH:mm:ss
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<PreliminaryProcedure页面展示实体>}
 */
export function preliminaryProcedureUpdate(data, config) {
  return post("/preliminaryProcedure/update", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} PreliminaryProcedure页面展示实体 前期手续页面展示实体
 * @property {boolean} canDelete 是否拥有删除权限
 * @property {boolean} canEdit 是否拥有编辑权限
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建用户
 * @property {string} createUserDeptName 创建用户部门名称
 * @property {string} createUserRealName 创建用户真实姓名
 * @property {number} delFlag 删除标识（已删除1， 未删除0）
 * @property {string} endTime 结束时间
 * @property {number} id 主键
 * @property {number} menuId 菜单ID
 * @property {string} nameOfEarlyStage 前期阶段
 * @property {string} nameOfEarlyStageName 前期阶段名称
 * @property {number} projectId 项目ID
 * @property {string} projectName 项目名称
 * @property {string} remarks 备注
 * @property {number} responsiblePerson 负责人
 * @property {string} responsiblePersonName 负责人名称
 * @property {string} startTime 开始时间
 * @property {string} updateTime 更新时间
 * @property {string} updateUser 更新用户
 * @description 前期手续页面展示实体
 */
